package com.uniedp.common.handle;

import com.google.common.collect.Lists;
import com.uniedp.core.utils.StringUtils;
import com.uniedp.modules.msg.dto.MsgBizContentDTO;
import com.uniedp.modules.msg.dto.MsgBizObjectDTO;
import com.uniedp.modules.msg.dto.MsgBizRuleDTO;
import com.uniedp.modules.msg.service.handler.MsgWarningToObjectHandler;
import com.uniedp.modules.msg.utils.WarnUtil;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @ClassName EdpWarningToObjectHandler
 * @Description 解析 自定义 的发送人类型
 * @Version 1.0
 **/
@Service
@Log4j2
public class EdpWarningToObjectHandler implements MsgWarningToObjectHandler {

    /**
     * 发送人对象 类型
     * 1 指定用户
     */
    public static String MSG_OBJECT_CLASS_USER = "USER";
    public static String MSG_OBJECT_CLASS_PARAMS = "PARAMS";


    /**
     * 解析 自定义 的发送人类型
     *
     * @param ruleDTO       当前规则对象
     * @param objectDTO     当前发送人对象
     * @param bizContentDTO 当前事件对象
     * @return 返回用户的id列表
     */
    @Override
    public List<String> onBeforeFindUser(MsgBizRuleDTO ruleDTO, MsgBizObjectDTO objectDTO, MsgBizContentDTO bizContentDTO) {
        //指定用户
        if (MSG_OBJECT_CLASS_USER.equals(objectDTO.getObjType())) {
            return null;
        }
        // 从参数中获取
        if (MSG_OBJECT_CLASS_PARAMS.equals(objectDTO.getObjType())) {
            Map<String, Object> params = WarnUtil.getMapParams(ruleDTO, bizContentDTO);
            Object bizReceiveInfoObj = params.get("bizReceiveInfo");
            if (bizReceiveInfoObj != null && StringUtils.isNotBlank(bizReceiveInfoObj.toString())) {
                String[] arr = bizReceiveInfoObj.toString().split(",");
                return Lists.newArrayList(arr);
            }
            return null;
        }
        return null;
    }
}
